1. Field of Invention
The present invention relates to methods and apparatus for accessing content in a storage system.
2. Description of the Related Art
Virtually all computer application programs rely on storage that may be used to store computer code and data manipulated by the computer code. A typical computer system includes one or more host computers that execute such application programs and one or more storage systems that provide storage.
The host computers may access data by sending access requests to the one or more storage systems. Some storage systems require that the access requests identify units of data to be accessed using a block address that identifies a logical volume in which the data is stored and the blocks within that logical volume where the data is located. Such storage systems are known as “block I/O” storage systems. Although the logical volumes presented by the storage system to the host may not map in a one-to-one manner to physical storage devices, they are perceived by the host as corresponding to physical storage devices, and the specification of a logical volume and block address influences where the referenced data is physically stored within the storage system.
In contrast to block I/O storage systems, some-storage systems receive and process access requests that identify a unit of data or other content unit using an object identifier, rather than an address that specifies where the data unit is physically or logically stored in the storage system. Such storage systems are referred to herein as object addressable storage (OAS) systems. In object addressable storage, a content unit may be identified (e.g., by host computers requesting access to the content unit) using an object identifier that is independent of the physical or logical location at which the content unit is stored (although it is not required to be independent). From the perspective of the host computer (or user) accessing a content unit on an OAS system, the object identifier does not control where the content unit is stored. Thus, in an OAS system, if the physical or logical location at which the unit of content is stored changes, the identifier by which host computers access the unit of content may remain the same. In contrast, in a block I/O storage system, if the physical or logical location at which the unit of content is stored changes, host computers accessing the unit of content may need to be made aware of the location change and then use the new physical or logical address of the unit of content for future accesses.
One type of an OAS system is a content addressable storage (CAS) system. In a CAS system, the object identifiers that identify content units are content addresses. A content address is an identifier that is computed, at least in part, from at least a portion of the content of its corresponding unit of content, which can be data and/or metadata. For example, a content address for a unit of content may be computed by hashing the unit of content and using the resulting hash value as the content address. Storage systems that identify content by a content address are termed content addressable storage (CAS) systems.